package com.zhengbing.tj.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 审计日志记录注解
 * 用于标记需要记录审计日志的方法
 *
 * @author zhengbing
 * @date 2024-08-22
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface AuditLogRecord {
    
    /**
     * 实体类型
     */
    String entityType();
    
    /**
     * 操作类型
     * 默认自动根据方法名判断
     */
    String operationType() default "auto";
    
    /**
     * 操作描述
     */
    String description() default "";
    
    /**
     * 实体ID参数索引
     * 默认从方法返回值中获取ID
     */
    int idParamIndex() default -1;
    
    /**
     * 是否记录变更详情
     */
    boolean recordDetails() default true;
}